iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
AI Engineering

拒當 API 韭菜!30 天手邊設備玩轉 AI Agent系列 第 6 篇

【Day 06】Agent 框架選秀大會:Pi、smolagents、Deep Agents、Hermes 誰留在實作名單?

  • 分享至 

  • xImage
  •  

前幾天把模型、Benchmark、Agent Framework 都大致整理過一輪之後,今天終於可以開始收斂框架名單了。

目前我比較有興趣的有四個:

  • Pi
  • smolagents
  • Deep Agents
  • Hermes Agent

這四個其實都可以拿來做 Agent,但設計方向差很多。

有的框架很精簡,很多東西都要自己補;有的已經幫你把 Skill、Memory、Sub-agent、Filesystem 都準備好了;還有一種已經接近完整的 Personal Agent。

所以今天先來把這四個拆開看。

這一輪的目標也很單純:

先確認它們各自適合什麼情境,接著挑出幾個進到後面的實作測試。


先把我的需求再放回桌上

這次的目標一直都沒有變。

我希望最後可以在自己的設備上,慢慢做出一個真的可以幫忙做事情的 Local Agent。

目前需求大概包含:

  • 多輪對話
  • 圖片、PDF、Word、Excel 理解
  • 讀取、新增、修改電腦檔案
  • 產生 Word、Excel、PowerPoint
  • 做少量網路搜尋
  • 可以依照 Skill 執行固定流程
  • Skill 之後可以持續增加
  • 可以看到 Agent 呼叫了哪些 Tool
  • 可以追蹤執行過程
  • 可以搭配地端模型

硬體目前就是前面提過的兩台:

MacBook Pro M3 Max
DGX Spark

所以這次挑框架時,我會特別在意幾件事情:

能不能接 Local LLM
Tool 能不能自己擴充
Skill 好不好管理
檔案操作方便不方便
之後能不能加監控
Agent 行為容不容易看懂

接著就直接看四個框架。


1. Pi:一台很乾淨的 Agent 底盤

先看 Pi。

Pi 給我的第一個感覺就是:

很乾淨。

它沒有一開始就塞一大堆功能給你,核心主要處理幾件事情:

User
 ↓
Agent Loop
 ↓
LLM
 ↓
Tool
 ↓
Result
 ↓
LLM

預設工具也很簡單:

read
write
edit
bash

整體概念很好理解。

這點其實很適合現在這個系列,因為我本來就想知道 Agent 到底是怎麼工作的。

像是:

模型什麼時候決定用 Tool
Tool 回來的資料怎麼進 Context
下一輪模型怎麼接著判斷
Session 怎麼保存

這些東西在 Pi 裡面都比較容易看清楚。


Pi 很適合拿來自己擴充

Pi 有兩個我很在意的東西。

第一個是 Extension。

Extension 可以拿來:

  • 新增 Tool
  • 攔截 Tool Call
  • 修改 Context
  • 增加 Command
  • 監聽 Agent Event
  • 做額外的 UI
  • 加入安全檢查

例如之後想做這種流程:

Agent
 ↓
準備執行 bash
 ↓
Extension 攔截
 ↓
記錄 command
 ↓
判斷風險
 ↓
允許執行

這就很適合拿來做後面的可追溯跟安全控制。

第二個是 Skill。

Pi 可以透過 SKILL.md 來定義操作流程。

例如:

skills/

├── excel-report
├── pdf-analysis
├── word-report
└── web-research

收到任務後,Agent 再去載入對應的 Skill。

這種方式我蠻喜歡的。

因為 Local LLM 的 Context 本來就很寶貴,如果每次都把所有 Skill 全塞進 Prompt,跑沒幾次 Context 就會開始變得很肥。


Pi 給我的定位

我目前會把 Pi 放在這個位置:

Agent Harness

很適合自己慢慢蓋東西。

優點:

  • 架構簡單
  • 好理解
  • 好擴充
  • Skill 支援完整
  • 很適合觀察 Agent Loop
  • 後面很好加監控

缺點也很明顯。

很多能力要自己補。

像 Browser、Office、複雜 Memory、完整 Sub-agent,都需要額外處理。

所以 Pi 很像拿到一台乾淨底盤。

車可以開。

後面要不要裝導航、環景、ADAS、冰箱,就看自己。


2. smolagents:Agent 開始自己寫 Python

接下來是 Hugging Face 的 smolagents。

這個框架很小,寫法也很直接。

它其中一個最有特色的設計就是 CodeAgent。

一般 Agent 比較常看到的是:

LLM
 ↓
Tool Call
 ↓
Tool Result
 ↓
LLM

例如:

read_excel
 ↓
filter_data
 ↓
group_data
 ↓
write_excel

smolagents 的 CodeAgent 可以直接讓模型產生 Python 程式。

例如:

data = read_excel("sales.xlsx")

monthly = (
    data.groupby("month")
        ["revenue"]
        .sum()
)

save_excel(monthly, "report.xlsx")

接著把這段程式執行掉。


這個設計自由度非常高

有些任務其實本來就很適合寫程式。

例如:

  • Excel 資料分析
  • Data Processing
  • 數學計算
  • 檔案批次處理
  • API 資料整理

如果每一步都要回去問一次 LLM,整個流程可能會拉很長。

CodeAgent 可以把邏輯一次寫出來。

像:

讀資料
篩選
分組
統計
輸出

全部包在一段 Python 裡面完成。

對 Data Agent 來說,這個想法很有吸引力。


但這一輪我先不把 smolagents 放進實作比較

主要考量還是在 Local LLM。

讓 Agent 自己寫程式,模型要處理的事情會更多。

模型需要同時具備:

  • Coding 能力
  • Planning 能力
  • Library 使用能力
  • Debugging 能力
  • Error Recovery
  • 對執行環境的理解
  • 對資料結構的理解

今天如果用的是很強的雲端模型,這些事情相對好處理。

但我現在是在資源有限的地端環境。

能跑的模型本來就受到:

記憶體
模型大小
量化
推論速度
Context
Tool Calling 能力

這些條件限制。

我現在想先把整體難度控制住。

假設 CodeAgent 執行失敗,可能的原因會很多:

模型程式寫錯
Library 用錯
資料格式理解錯
Debug 沒修好
Sandbox 有問題
環境套件不完整

這些風險加進來之後,會讓測試很難判斷到底是框架問題、模型問題,還是程式執行問題。

所以這一階段我先把 smolagents 留在旁邊。

之後如果專門做:

Data Agent
Code Agent
Excel Agent

我會再回頭測它。

目前先讓模型專心做:

理解任務
選 Tool
執行 Skill
判斷下一步

這樣比較符合目前的地端條件。


3. Deep Agents:LangGraph 幫你把常用零件裝好了

第三個是 Deep Agents。

這個跟我比較熟的 LangGraph 有直接關係。

可以先把關係理解成:

LangGraph
   ↓
Deep Agents

LangGraph 比較像底層 Runtime。

Deep Agents 則把很多常見的 Agent 能力先組好了。

目前像這些東西都已經準備好:

  • Filesystem
  • Skills
  • Memory
  • Sub-agent
  • Context Management
  • Human in the loop
  • Shell
  • Custom Tools

所以使用起來會比直接從 LangGraph 自己組簡單很多。


Deep Agents 的 Sub-agent 很有吸引力

這個是我目前蠻想測的功能。

假設任務是:

搜尋資料
整理資料
分析內容
寫成報告

可以拆成:

Main Agent
 │
 ├── Research Agent
 ├── Data Agent
 └── Writer Agent

每個 Agent 各自處理自己的事情。

這樣 Context 會比較乾淨。

Research Agent 搜尋了一堆網頁,也不用全部塞回 Main Agent。

最後只把整理好的結果回傳。

對長任務來說,這個設計很重要。


Deep Agents 也有 Skill

它同樣可以透過 Skill 來管理能力。

例如:

skills/

excel-analysis
pdf-summary
report-writing
web-search

再搭配 Memory、Filesystem、Sub-agent 一起工作。

這就已經很接近一個完整的 Agent Application。


對我來說另一個優點是 LangGraph 生態

我本來就有在用 LangGraph。

所以 Deep Agents 後面如果要加:

Tracing
Checkpoint
Persistence
Evaluation
LangSmith

整體會比較順。

這對我後面想做 Agent 可追溯也很重要。

像:

用了什麼 Tool
每一步 Prompt 是什麼
Token 用多少
哪一步出錯
Agent 最後怎麼完成

LangGraph 這一套本來就比較成熟。


Deep Agents 的定位

我目前會把它放在:

工程化 Agent Framework

它適合:

  • 複雜 Agent
  • 長任務
  • Sub-agent
  • 多步流程
  • 正式 Application
  • 需要 Observability 的專案

Pi 比較適合自己慢慢打造。

Deep Agents 則比較像很多零件已經幫你裝好,可以直接開始蓋完整系統。


4. Hermes Agent:這個已經快變 Agent OS 了

最後一個是 Hermes Agent。

這個框架看一看,很容易開始失控。

因為它真的內建很多東西。

目前可以看到的能力包含:

  • Terminal
  • Filesystem
  • Browser
  • Web Search
  • Vision
  • Code Execution
  • Persistent Memory
  • Skills
  • Sub-agent
  • MCP
  • Cron
  • Messaging
  • Docker
  • SSH
  • Remote Execution
  • Voice

大部分我想自己慢慢加的東西,它已經有了。

所以 Hermes 給我的感覺已經很接近:

Personal Agent

甚至有點像:

Agent OS

Hermes 的 Skill 很完整

Hermes 也有 SKILL.md。

可以把不同能力拆開。

例如:

excel
pdf
server
travel
report
browser

需要時再載入。

這跟我想做的 Skill-based Agent 很接近。


Memory 也是它的一個重點

Hermes 本身就有 Persistent Memory。

也就是 Agent 可以跨 Session 留下一些資訊。

再加上它現在強調的 Learning Loop,Agent 完成任務之後,可以把經驗整理成 Skill。

整個流程會變成:

完成任務
 ↓
留下經驗
 ↓
整理 Skill
 ↓
下次再使用

這個方向很接近我對 Personal Agent 的想像。


MCP 也已經整合好了

Hermes 有 MCP Client。

所以未來如果我要接:

Database
Git
Office
Browser
Internal API

可以直接透過 MCP 擴充。

這點跟我現在的技術方向也很合。


Hermes 的定位

我現在會把 Hermes 放在:

完整 Agent System

它的優勢是:

  • 開箱功能很多
  • Personal Agent 味道很重
  • Skill 完整
  • Memory 完整
  • MCP 完整
  • Browser / Terminal 都有
  • 很接近最後成品

相對的,很多東西都已經包好了。

如果後面要研究 Agent 每一層到底怎麼組,Pi 會比較透明。

如果想快速看看完整 Local Agent 可以做到什麼程度,Hermes 很值得測。


四個框架放在一起看

目前我的理解大概可以排成這樣:

smolagents
   │
   │ 極簡 Agent SDK
   │
Pi
   │
   │ Agent Harness
   │
Deep Agents
   │
   │ 工程化 Agent Framework
   │
Hermes
   │
   │ 完整 Agent System

如果再口語一點:

smolagents
「模型自己寫程式處理。」

Pi
「核心給你,剩下自己裝。」

Deep Agents
「常用零件我先幫你裝好。」

Hermes
「你先用,很多東西我都準備好了。」

先整理一下功能差異

能力 Pi smolagents Deep Agents Hermes
Local LLM ✅ ✅ ✅ ✅
Tool Calling ✅ ✅ ✅ ✅
Skill ✅ 自行設計 ✅ ✅
Filesystem ✅ Tool ✅ ✅
Terminal ✅ Tool ✅ ✅
Browser 擴充 Tool Tool ✅
Memory Session 基礎 ✅ ✅
Sub-agent 可擴充 ✅ ✅ ✅
MCP 可擴充 可整合 ✅ ✅
Code Agent Bash / Extension 很強 Tool ✅
Observability 自己做 Callback LangSmith 內建紀錄
開箱完整度 中 低 高 很高
客製自由度 很高 很高 高 中高

最後留下三個

整理完之後,下一階段我先留下:

Pi
Deep Agents
Hermes

smolagents 先暫時跳過。

原因很單純。

我目前的 Local LLM 已經受到硬體條件限制。

如果再把:

寫程式
Debug
Library 使用
Sandbox
執行環境

這些風險一起加進來,整個測試的變數會太多。

所以這一階段先專心測 Tool-driven 跟 Skill-driven 的 Agent。

等後面要做 Code Agent 或 Data Agent,再把 smolagents 拉回來。


下一步直接跑同一個任務

框架看到這裡差不多了。

後面我不打算再一直看 README。

下一步直接實作。

我會讓:

Pi
Deep Agents
Hermes

全部跑同一組條件:

相同設備
相同 Local LLM
相同任務
相同輸入資料

然後比較:

Task Success
Tool Calls
LLM Calls
Context
Skill Following
Execution Time
Token Usage
Error Recovery
Filesystem 操作
可追溯性
實作複雜度

上一篇
【Day 05】LLM 有了,然後呢?Agent Framework 百家爭鳴
系列文
拒當 API 韭菜!30 天手邊設備玩轉 AI Agent 共 6 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言